﻿using System.Drawing;

namespace dk.Helper.Base
{
    public interface IWorldMapSettings
    {
        /// <summary>
        /// Gets or sets the zoom.
        /// </summary>
        /// <value>
        /// The zoom.
        /// </value>
        int Zoom { get; set; }

        /// <summary>
        /// Gets or sets the map center X.
        /// </summary>
        /// <value>
        /// The map center X.
        /// </value>
        int MapCenterX { get; set; }

        /// <summary>
        /// Gets or sets the map center Y.
        /// </summary>
        /// <value>
        /// The map center Y.
        /// </value>
        int MapCenterY { get; set; }

        /// <summary>
        /// Gets or sets the world map filter.
        /// </summary>
        /// <value>
        /// The world map filter.
        /// </value>
        IWorldMapFilter WorldMapFilter { get; }

        /// <summary>
        /// Gets the allies.
        /// </summary>
        IAllies Allies { get; }

        /// <summary>
        /// Gets the enemies.
        /// </summary>
        IAllies Enemies { get; }

        /// <summary>
        /// Gets the ally players.
        /// </summary>
        IPlayers AllyPlayers { get; }

        /// <summary>
        /// Gets the enemy players.
        /// </summary>
        IPlayers EnemyPlayers { get; }

        /// <summary>
        /// Sets the brush of the ally.
        /// </summary>
        /// <param name="ally">The ally.</param>
        /// <param name="brush">The brush.</param>
        void SetBrush(IAlly ally, SolidBrush brush);

        /// <summary>
        /// Gets the brush of the ally.
        /// </summary>
        /// <param name="ally">The ally.</param>
        /// <returns></returns>
        SolidBrush GetBrush(IAlly ally);

        /// <summary>
        /// Sets the brush.
        /// </summary>
        /// <param name="player">The player.</param>
        /// <param name="brush">The brush.</param>
        void SetBrush(IPlayer player, SolidBrush brush);

        /// <summary>
        /// Gets the brush.
        /// </summary>
        /// <param name="player">The player.</param>
        /// <returns></returns>
        SolidBrush GetBrush(IPlayer player);

        /// <summary>
        /// Gets the brush of the village.
        /// </summary>
        /// <param name="village">The village.</param>
        /// <returns></returns>
        SolidBrush GetVillageBrush(IVillage village);

        /// <summary>
        /// Removes the specified ally.
        /// </summary>
        /// <param name="ally">The ally.</param>
        void Remove(IAlly ally);

        /// <summary>
        /// Removes the specified player.
        /// </summary>
        /// <param name="player">The player.</param>
        void Remove(IPlayer player);

        /// <summary>
        /// Saves this instance.
        /// </summary>
        void Save();

        /// <summary>
        /// Loads this instance.
        /// </summary>
        void Load();
    }
}